package com.briup.oagg.dataset.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.briup.oagg.dataset.bean.basic.Dataset;
import com.briup.oagg.dataset.web.vm.DatasetListVM;
import com.briup.oagg.dataset.web.vm.DatasetVM;
import com.briup.oagg.dataset.web.vm.DatasetAddVM;
import com.briup.oagg.dataset.web.vm.DatasetUpdateVM;

import java.util.List;

/**
 * 数据集信息业务逻辑接口
 *
 * @author briup
 */
public interface IDatasetService extends IService<Dataset> {
    /**
     * 新增数据集
     * @param vm 新增参数
     */
    void addDataset(DatasetAddVM vm);

    /**
     * 修改数据集
     * @param vm 修改参数
     */
    void updateDataset(DatasetUpdateVM vm);

    /**
     * 根据数据集编号删除数据集及其对应的数据表和指标信息
     * @param datasetId 数据集编号
     */
    void deleteById(String datasetId);

    /**
     * 分页多条件查询数据集
     * @param pageNum   每页大小
     * @param pageSize  当前页码
     * @param search    数据集名称
     * @return 数据集分页信息
     */
    Page<DatasetListVM> findByPage(Integer pageNum, Integer pageSize, String search);

    /**
     * 根据地质单元查询数据集信息
     * @param basinId 盆地编号
     * @param zoneId  区带编号
     * @param trapId  圈闭编号
     * @param reservoirId 油气藏编号
     * @return 数据集列表信息
     */
    List<DatasetVM> findByCondition(String basinId, String zoneId,String trapId, String reservoirId);

    /**
     * 根据编号查询数据集编号
     * @param datasetId 数据集编号
     * @return 数据集信息
     */
    DatasetVM findById(String datasetId);

    /**
     * 统计所有数据集数量
     * @return 数据集总数
     */
    int countNum();
}
